parser grammar CParser;

options {
  language = Java;
  tokenVocab = CLexer;
}

@header {
   package ejercicio2; 
}

codigo: sentencia+ EOF; 
sentencia: (exp_while | exp_if | asignacion SEPARADOR);
asignacion: IDENT OP_IGUAL exp;
exp_while: WHILE PAR_OP exp PAR_CL cuerpo; 
exp_if: IF PAR_OP exp PAR_CL cuerpo;
cuerpo: sentencia | (LLAV_OP sentencia+ LLAV_CL);
exp: exp_mult (OP_ADD exp_mult)* ;
exp_mult : exp_base (OP_MUL exp_base)* ;
exp_base : exp_sub (OP_REL exp_sub)*; 
exp_sub: NUMERO | PAR_OP exp PAR_CL | IDENT; 